<?php

namespace App\Admin\RowActions;

use App\Jobs\SendCoupons;
use Dcat\Admin\Grid\RowAction;
use Illuminate\Http\Request;
use App\Models\CouponsConfig;
use App\Models\User;
class CouponsSendAction extends RowAction
{


    public function __construct()
    {
    }

    /**
     * 标题
     *
     * @return string
     */
    public function title()
    {
        return '<i class="fa fa-paper-plane"></i>批量补发礼品券';
    }

    /**
     * 设置确认弹窗信息，如果返回空值，则不会弹出弹窗
     *
     * 允许返回字符串或数组类型
     *
     * @return array|string|void
     */
    public function confirm()
    {
        return [
            // 确认弹窗 title
            "您确定要批量补发该礼品券么？",
            // 确认弹窗 content
            $this->row->title,
        ];
    }

    /**
     * 处理请求
     *
     * @param Request $request
     *
     * @return \Dcat\Admin\Actions\Response
     */
    public function handle(Request $request)
    {
//        dd($request->all());
        // 获取当前行ID
        $id = $this->getKey();
        $coupons_config = CouponsConfig::find($id);
//        dump($id);
        //注册礼品券的补发
//        dump(CouponsConfig::COUPONS_TYPE_SIGNIN);
//        dump($coupons_config->type);
        if($coupons_config->type == CouponsConfig::COUPONS_TYPE_SIGNIN){
            $full_users = User::where("sin_in_day",">=",$coupons_config->required_days)
                                ->pluck("id")->toArray();
            $sended_users = $coupons_config->coupons()
                                ->pluck("user_id")->toArray();

            $should_send_users = array_diff($full_users,$sended_users);
            if (count($should_send_users)>0){
                //这里由于批量赋值的话也需要一个一个的给客户去发送通知，因此可以一起加入队列
                foreach ($should_send_users as $value){
                    dispatch(new SendCoupons($value,$coupons_config->id));
                }
                return  $this->response()->success("操作成功")->refresh();
            }else{
                return  $this->response()->error("所有符合条件的客户均已发送礼品券");
            }
        }else{
            return  $this->response()->error("注册送礼的不能补发");
//            dd(11);
        }
//       dd($coupons_config);

//        // 复制数据
//        $model::find($id)->replicate()->save();
//
//        // 返回响应结果并刷新页面
//        return $this->response()->success("复制成功: [{$username}]")->refresh();
    }

    /**
     * 设置要POST到接口的数据
     *
     * @return array
     */
    public function parameters()
    {
//        return [
//            // 发送当前行 username 字段数据到接口
//            'username' => $this->row->username,
//            // 把模型类名传递到接口
//            'model' => $this->model,
//        ];
    }
}
